1. Technical Field
The present invention relates generally to computer systems, and more specifically to data transfer protocols between computer systems.
2. Background Art
In communication networks between computer systems, the communication links can be represented as a graph with each attached computer system and specialized server device represented as a node. Data is passed between the nodes using an agreed on protocol which is determined by the designer of the network. Typically, data is transmitted using synchronous serial communications. Data and control messages are bundled in discrete packets also called frames, each of which contains addressing information, data or a control message, and error checking values.
Many networks are dynamically switched, so that a connection between two nodes on the network may pass through one or more intermediate switches. Different communication sessions between the same two nodes may be routed through different physical connections.
Because of various delays and competition for resources inherent in communication networks, various conflicts can arise. These conflicts involve the timing of data accesses to remote nodes, and can be important when certain shared resources, such as network file servers, are accessed.
Two-way transmission of data between nodes is generally accomplished as two separate transactions. When a local node transmits information to a remote node, a communications link is set up for that transfer. Once the transfer is complete, the communications link is disconnected. If the remote node needs to send a reply, a new communications link is initiated and the transfer to the local node is made over the new link.
In some situations, it is necessary for a local node to be able to transmit data to and receive data from a remote node in a single transaction. This prevents interference from third party nodes during the time between closing of a transmission link in one direction and initiating a new link in the other direction. This situation is similar to certain bus conflicts found in computer systems, in which certain "atomic operations" cannot be interrupted by other devices attached to the computer system bus. The operation "test-and-set" on multiprocessing systems typifies this type of atomic operation.
It would be desirable for a network protocol to support atomic link operations, in which a single communications link can support data transfer in both directions. It would further be desirable for such a network protocol to support atomic link operations on a network in which, before data is transmitted from one node to another, the receiving node must transmit to the sending node information defining the environment of the receiving node.